/**
 * @file rasterizer_interface.h
 * @author ThomasKingFree (dulu150@126.com)
 * @brief 渲染接口定义
 * 请注意，YueGUI图形引擎定义的接口都为统一的类型，并且每个接口都是需要独立注册的
 * 每个接口都可以在不同平台上利用硬件能力采用不同的实现
 * 本目录中的所有实现都只不过是一种通用实现，具体开发时候支持完全自定义改写并注册到引擎中
 * @version 0.1
 * @date 2021-03-14
 *
 * @copyright Copyright (c) 2021
 *
 */
#include <cstdint>

#ifndef RASTERIZER_INTERFACE_H
#define RASTERIZER_INTERFACE_H
namespace YueGUI {
namespace Rasterizer {
union RenderPara {
    struct Rect {
        uint32_t color;
    }; // 绘制矩形、水平、竖直线段时需要的参数

    struct Sector {
        int16_t innerRadius;
        int16_t outterRadius;
        int16_t startAngle;
        int16_t endAngle;
        uint32_t color;
    }; // 绘制扇形、圆、圆弧时需要的参数

    struct Curve {
        Point p1;
        Point p2;
        Point p3;
        Point p4;
        uint32_t color;
    }; // 绘制非水平线段时需要的参数

    struct Line {
        Point p1;
        Point p2;
        int16_t width;
        int16_t reserve;
        uint32_t color;
    }; // 绘制非水平线段时需要的参数
};

bool RenderRect(Rect &rect, Rect &dirty, RenderPara &para);
bool RenderSector(Rect &rect, Rect &dirty, RenderPara &para);
bool RenderCurve(Rect &rect, Rect &dirty, RenderPara &para);
bool RenderLine(Rect &rect, Rect &dirty, RenderPara &para);
} // namespace Rasterizer
} // namespace YueGUI
#endif // RASTERIZER_INTERFACE_H
